#include <bits/stdc++.h>
using namespace std;
int main(int argc, char** argv) {
int t;
cin>>t;
while(t--){
int n,m;
cin>>n>>m;
string s1,s2;
cin>>s1>>s2;
int temp=1;
int k1=0,k2=0;
bool kk=false;
for(int i=0;i<n;i++) {
if(i==0) continue;
if(s1[i]==s1[i-1]) temp++;
else temp=1;
if(temp==3){
kk=true;
break;
}
if(temp==2){
k1++;
}
}
temp=1;
for(int i=0;i<m;i++){
if(i==0)continue;
if(s2[i]==s2[i-1]) temp++;
else temp=1;
if(temp==3){
kk=true;
break;
}
if(temp==2){
k2++;
}
}
if(k2>=2||kk||k1>=2||(k1==1&&k2==1)){
cout<<"NO"<<endl;
continue;
}
if(k1==1||k2==1){
if(s2[m-1]==s1[n-1]) cout<<"NO"<<endl;
else cout<<"YES"<<endl;
continue;
}
else cout<<"YES"<<endl;
// if((k1&&k2)||kk) cout<<"NO"<<endl;
//else cout<<"YES"<<endl;
}
}
141A - Amusing Joke | 112A - Petya and Strings |
677A - Vanya and Fence | 1621A - Stable Arrangement of Rooks |
472A - Design Tutorial Learn from Math | 1368A - C+= |
450A - Jzzhu and Children | 546A - Soldier and Bananas |
32B - Borze | 1651B - Prove Him Wrong |
381A - Sereja and Dima | 41A - Translation |
1559A - Mocha and Math | 832A - Sasha and Sticks |
292B - Network Topology | 1339A - Filling Diamonds |
910A - The Way to Home | 617A - Elephant |
48A - Rock-paper-scissors | 294A - Shaass and Oskols |
1213A - Chips Moving | 490A - Team Olympiad |
233A - Perfect Permutation | 1360A - Minimal Square |
467A - George and Accommodation | 893C - Rumor |
227B - Effective Approach | 1534B - Histogram Ugliness |
1611B - Team Composition Programmers and Mathematicians | 110A - Nearly Lucky Number |